# 定义一个基础类Device
class Device:
    def __init__(self, brand):  # 初始化方法，接收品牌参数
        self.brand = brand  # 设置品牌属性
        print("Device初始化")  # 打印初始化信息

    def power_on(self):  # 定义通电启动方法
        print("通电启动")  # 打印通电启动信息


# 定义一个继承自Device的智能设备类
class SmartDevice(Device):
    def __init__(self, brand, os):  # 初始化方法，接收品牌和操作系统参数
        super().__init__(brand)  # 调用父类的初始化方法
        self.os = os  # 设置操作系统属性
        print("SmartDevice初始化")  # 打印初始化信息

    def connect_wifi(self):  # 定义连接WiFi方法
        print("连接WiFi")  # 打印连接WiFi信息


# 定义一个继承自SmartDevice的手机类
class Phone(SmartDevice):
    def call(self):  # 定义拨打电话方法
        print("正在拨打电话")  # 打印拨打电话信息


# 定义一个继承自SmartDevice的平板类
class Tablet(SmartDevice):
    def draw(self):  # 定义绘画方法
        print("正在绘画")  # 打印绘画信息


# 定义一个多重继承的智能平板类
class SmartTablet(Phone, Tablet):
    def __init__(
        self, brand, os, pen_included
    ):  # 初始化方法，接收品牌、操作系统和是否包含手写笔参数
        super().__init__(brand, os)  # 调用父类的初始化方法
        self.pen_included = pen_included  # 设置是否包含手写笔属性
        print("SmartTablet初始化")  # 打印初始化信息


# 测试代码
print("继承结构：Phone -> Tablet -> SmartTablet")  # 打印继承结构信息
st = SmartTablet("华为", "HarmonyOS", True)  # 创建一个SmartTablet对象

print("\n方法调用测试：")  # 打印方法调用测试标题
st.call()  # 调用拨打电话方法
st.draw()  # 调用绘画方法
st.connect_wifi()  # 调用连接WiFi方法

print("\nMRO解析顺序：")  # 打印MRO解析顺序标题
for i, cls in enumerate(SmartTablet.__mro__, 1):  # 遍历MRO解析顺序
    print(f"{i}. {cls.__name__}")  # 打印每个类的名称
